﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;
using System.Data.SqlClient;
using Crosland.Automotriz.Entidad;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsT_Ven_Tarjeta_Placa_CabDAO
    {
        private AutomotrizEntities ContextoDeObjs = new AutomotrizEntities();

        public IEnumerable<Object> lista_actualizar_tarjeta_placas(int anio, int mes, string DES_OFI_VTA, int tipo)
        {
            DM_CROSLAND_20130417Entities ContextoDeObjsEntidad = new DM_CROSLAND_20130417Entities();
            var p = new object[] { new SqlParameter("@anio", anio), new SqlParameter("@mes", mes), new SqlParameter("@DES_OFI_VTA", DES_OFI_VTA), new SqlParameter("@Tipo", tipo) };
            var resultado = ContextoDeObjsEntidad.ExecuteStoreQuery<T_TARJETA_PLACA_TRAMITE>("exec USP_TARJETA_PLACA_TRAMITE_LISTAR @anio,@mes,@DES_OFI_VTA,@Tipo", p).AsQueryable().ToList();
            return resultado;
        }

        public IEnumerable<Object> FiltroxOficinaVenta(int id_ofici_vta,int anio,int mes) {

            IEnumerable<Object> list = new List<Object>();

            try
            {

                var q = from v in ContextoDeObjs.TH_VENTA
                        from c in ContextoDeObjs.TD_CLIENTE
                        join ofv in ContextoDeObjs.TD_OFICINA_VENTA on v.ID_OFI_VTA equals ofv.ID_OFI_VTA
                        where
                          v.ID_CANAL_DISTRIB == 3 &&
                          ofv.ID_OFI_VTA == id_ofici_vta && v.FEC_FACTURA.Year == anio && v.FEC_FACTURA.Month == mes && 
                          (new int[] { 1, 2, 3, 4 }).Contains(v.TD_MATERIAL.ID_GRUPO_ARTICULO) &&

                           !  (from hj in ContextoDeObjs.T_VEN_TARJETA_PLACA_DET
                                 select hj.NRO_FACTURA).Any(x=>x==v.NRO_FACTURA
                                   )

                          where c.ID_CLIENTE==v.ID_CLIENTE
                        orderby
                          c.DES_CLIENTE ascending
                        select new
                        {
                            v.NRO_FACTURA,
                            ofv.DES_OFI_VTA,
                            v.ID_ORG_VTA,
                            v.NRO_FOLIO,
                            v.ID_TIEMPO,
                            v.FEC_FACTURA,
                            v.NRO_POSICION,                            
                            v.DES_MODELO,
                            v.IMP_CANTIDAD,
                            v.IMP_VENTA_SOLES,
                            v.NRO_MOTOR,
                            v.NRO_VIN,
                            v.NRO_LOTE,
                            v.NRO_PEDIDO_SAP,
                            v.NRO_CAJA,
                            v.REF_EMBARQUE,

                        c.NOM_COMERCIAL,
                        c.DES_CLIENTE,
                            NRO_POLIZA =
                              ((from tdt in ContextoDeObjs.T_IMP_DUA_TITULO
                                where
                                  tdt.NroPedido == v.REF_EMBARQUE
                                select new
                                {
                                    tdt.NroPoliza
                                }).FirstOrDefault().NroPoliza),
                            FEC_POLIZA = (System.DateTime?)
                              ((from tdt in ContextoDeObjs.T_IMP_DUA_TITULO
                                where
                                  tdt.NroPedido == v.REF_EMBARQUE
                                select new
                                {
                                    tdt.Fecha
                                }).FirstOrDefault().Fecha),
                            DES_CLASE_FACTURA = v.TD_CLASE_FACTURA.DES_CLASE_FACTURA.ToUpper()
                        };

                list = q.ToList();

            }
            catch 
            {
                
              
            }


            return list;
        }

        public IEnumerable<Object> SeleccionarDetalle(int ID_ORG_VTA, int NRO_FACTURA, int NRO_POSICION)
        {

            IEnumerable<Object> list = new List<Object>();

            try
            {

                var q = from v in ContextoDeObjs.TH_VENTA
                        join t in ContextoDeObjs.T_VEN_TARJETA_PLACA_DET
                        on v.NRO_FACTURA equals t.NRO_FACTURA
                        where v.ID_ORG_VTA == ID_ORG_VTA && v.NRO_FACTURA == NRO_FACTURA && v.NRO_POSICION == NRO_POSICION

                        select new
                        {
                            v.NRO_FACTURA,
                            v.TD_OFICINA_VENTA.DES_OFI_VTA,
                            v.ID_ORG_VTA,
                            v.NRO_FOLIO,
                            v.ID_TIEMPO,
                            v.FEC_FACTURA,
                            v.NRO_POSICION,
                            v.DES_MODELO,
                            v.IMP_CANTIDAD,
                            v.IMP_VENTA_SOLES,
                            v.NRO_MOTOR,
                            v.NRO_VIN,
                            v.NRO_LOTE,
                            v.NRO_PEDIDO_SAP,
                            v.NRO_CAJA,
                            v.REF_EMBARQUE,
                            v.TD_CLIENTE.NOM_COMERCIAL,
                            v.TD_CLIENTE.DES_CLIENTE,
                            NRO_POLIZA =
                              ((from tdt in ContextoDeObjs.T_IMP_DUA_TITULO
                                where
                                  tdt.NroPedido == v.REF_EMBARQUE
                                select new
                                {
                                    tdt.NroPoliza
                                }).FirstOrDefault().NroPoliza),
                            FEC_POLIZA = (System.DateTime?)
                              ((from tdt in ContextoDeObjs.T_IMP_DUA_TITULO
                                where
                                  tdt.NroPedido == v.REF_EMBARQUE
                                select new
                                {
                                    tdt.Fecha
                                }).FirstOrDefault().Fecha),
                            DES_CLASE_FACTURA = v.TD_CLASE_FACTURA.DES_CLASE_FACTURA.ToUpper()
                        };

                list = q.ToList();

            }
            catch
            {


            }


            return list;
        }

        public int UltimoNumeroCab()
        {
            int max = 0;

            try
            {
                max = ContextoDeObjs.T_VEN_TARJETA_PLACA_CAB.Select(x => x.ID_TARJETA_PLACA_CAB).Max();

            }
            catch (Exception)
            {
                return max;
            }

            return max;

        }

        public bool Insertar(T_VEN_TARJETA_PLACA_CAB Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_VEN_TARJETA_PLACA_CAB", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        public bool Modificar(T_VEN_TARJETA_PLACA_CAB obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_VEN_TARJETA_PLACA_CAB", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;

            }
            return true;
        }

        public IEnumerable<Object> listaTramitador(){
    IEnumerable<Object> list=new List<Object>();
    try 
	{
        var q = from tc in ContextoDeObjs.T_MAE_TABLA_GENERAL_CAB
                from td in ContextoDeObjs.T_MAE_TABLA_GENERAL_DET
                where
                  tc.ID_GENERAL_CAB == td.ID_GENERAL_CAB &&
                  tc.NOM_TABLA == "T_VEN_TRAMITADOR_MAE"
                select new
                {
                    td.ID_GENERAL_DET,
                    td.DES_CORTA
                };


        list = q.ToList();

		
	}
	catch 
	{
	}
    return list;
    
    }

        public List<T_VEN_TARJETA_PLACA_CAB> Seleccionar(int ID_TARJETA_PLACA_CAB)
        {
            List<T_VEN_TARJETA_PLACA_CAB> lista = new List<T_VEN_TARJETA_PLACA_CAB>();
            try
            {
                var q = from v in ContextoDeObjs.T_VEN_TARJETA_PLACA_CAB
                        where v.ID_TARJETA_PLACA_CAB == ID_TARJETA_PLACA_CAB
                        select v;
                lista = q.ToList();
            }
            catch
            {

            }
            return lista;
        }
    }
}
